﻿<?xml version="1.0" encoding="utf-8"?><Articles><Article><ArticlesID>866</ArticlesID><Title>Nhập m&amp;#244;n ASP.NET 2.0 (phần 3)</Title><Body>&amp;lt;p&amp;gt;ASP.NET 2.0 l&amp;amp;agrave; class library để tạo c&amp;amp;aacute;c  Web application m&amp;amp;agrave; NET Framework 2.0 cung cấp. Trong phần nhập m&amp;amp;ocirc;n về  ASP.NET 2.0 ch&amp;amp;uacute;ng t&amp;amp;ocirc;i xin được giải th&amp;amp;iacute;ch về cấu tr&amp;amp;uacute;c của ASP.NET 2.0 v&amp;amp;agrave;  những điểm cần lưu &amp;amp;yacute;....&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;a href=&amp;quot;http://dev.meotom.net/2010/3/24/Nhap-mon-ASP-NET-2-0-phan-1-360.htm&amp;quot; title=&amp;quot;Nhập m&amp;amp;ocirc;n ASP.NET 2.0 (phần 1)&amp;quot;&amp;gt;&amp;amp;gt;&amp;amp;gt; Nhập m&amp;amp;ocirc;n ASP.NET 2.0  (phần 1)&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;a href=&amp;quot;http://dev.meotom.net/2010/3/24/Nhap-mon-ASP-NET-2-0-phan-2-361.htm&amp;quot; title=&amp;quot;Nhập m&amp;amp;ocirc;n ASP.NET 2.0 (phần 2)&amp;quot;&amp;gt; &amp;amp;gt;&amp;amp;gt; Nhập m&amp;amp;ocirc;n ASP.NET 2.0  (phần 2)&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;h3&amp;gt;Ch&amp;amp;uacute; &amp;amp;yacute; khi sử dụng ASP.NET 2.0&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;Theo cấu  tr&amp;amp;uacute;c đ&amp;amp;atilde; tr&amp;amp;igrave;nh b&amp;amp;agrave;y cho tới đ&amp;amp;acirc;y, th&amp;amp;igrave; trong ASP.NET 2.0 ch&amp;amp;uacute;ng ta c&amp;amp;oacute; thể tạo Web application bằng phương ph&amp;amp;aacute;p giống với Visual Basic.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Tuy nhi&amp;amp;ecirc;n, ch&amp;amp;uacute;ng ta thử suy nghĩ về cấu tr&amp;amp;uacute;c ASP.NET đ&amp;amp;atilde; tr&amp;amp;igrave;nh b&amp;amp;agrave;y cho đến đ&amp;amp;acirc;y, do n&amp;amp;oacute; c&amp;amp;oacute; một ch&amp;amp;uacute;t kh&amp;amp;ocirc;ng giống với Visual Basic n&amp;amp;ecirc;n c&amp;amp;oacute; một số ch&amp;amp;uacute; &amp;amp;yacute;. Sau đ&amp;amp;acirc;y ch&amp;amp;uacute;ng t&amp;amp;ocirc;i xin n&amp;amp;ecirc;u ra những điểm cần ch&amp;amp;uacute; &amp;amp;yacute; đ&amp;amp;oacute;.&amp;lt;/p&amp;gt;
&amp;lt;h3&amp;gt;Ch&amp;amp;uacute; &amp;amp;yacute;  đến việc kh&amp;amp;ocirc;ng lưu giữ được gi&amp;amp;aacute; trị field&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;C&amp;amp;aacute;i được lưu  giữ trong ViewState th&amp;amp;igrave; chỉ l&amp;amp;agrave; trạng th&amp;amp;aacute;i của control. Field add v&amp;amp;agrave;o form kh&amp;amp;ocirc;ng phải l&amp;amp;agrave; đối tượng được lưu giữ trong ViewState. V&amp;amp;igrave; thế n&amp;amp;ecirc;n source code dưới đ&amp;amp;acirc;y kh&amp;amp;ocirc;ng đ&amp;amp;aacute;p ứng mong muốn.&amp;lt;/p&amp;gt;
&amp;lt;pre class=&amp;quot;brush: xhtml;&amp;quot; title=&amp;quot;code&amp;quot;&amp;gt;
&amp;amp;lt;%@ Page Language=&amp;amp;quot;C#&amp;amp;quot; %&amp;amp;gt;

&amp;amp;lt;!DOCTYPE html PUBLIC &amp;amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;amp;quot; &amp;amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;amp;quot;&amp;amp;gt;

&amp;amp;lt;script runat=&amp;amp;quot;server&amp;amp;quot;&amp;amp;gt;
    //  Field kh&amp;amp;ocirc;ng được ViewState bảo lưu
    private string name;

    private void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            name = &amp;amp;quot;Ojima&amp;amp;quot;;
        }

        //  name field kh&amp;amp;ocirc;ng được set trong trường hợp postback, 
        //  v&amp;amp;igrave; thế hiển thị d&amp;amp;ograve;ng chữ &amp;amp;quot;Hello, !&amp;amp;quot;.
        greetingLabel.Text = string.Format(&amp;amp;quot;{0}, {1}!&amp;amp;quot;, GetGreetingMessage(), name);
    }

    //  Get c&amp;amp;acirc;u ch&amp;amp;agrave;o hỏi khớp với thời gian.
    private string GetGreetingMessage()
    {
        DateTime dt = DateTiNow;

        if (dt.Hour &amp;amp;lt; 10)
        {
            return &amp;amp;quot;Good Morning&amp;amp;quot;;
        }

        if (dt.Hour &amp;amp;gt; 18)
        {
            return &amp;amp;quot;Good Night&amp;amp;quot;;
        }

        return &amp;amp;quot;Hello&amp;amp;quot;;
    }
&amp;amp;lt;/script&amp;amp;gt;

&amp;amp;lt;html xmlns=&amp;amp;quot;http://www.w3.org/1999/xhtml&amp;amp;quot;&amp;amp;gt;
&amp;amp;lt;head runat=&amp;amp;quot;server&amp;amp;quot;&amp;amp;gt;
    &amp;amp;lt;title&amp;amp;gt;Kh&amp;amp;ocirc;ng lưu gi&amp;amp;aacute; trị field&amp;amp;lt;/title&amp;amp;gt;
&amp;amp;lt;/head&amp;amp;gt;
&amp;amp;lt;body&amp;amp;gt;
    &amp;amp;lt;form id=&amp;amp;quot;form1&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot;&amp;amp;gt;
        &amp;amp;lt;p&amp;amp;gt;&amp;amp;lt;asp:Label ID=&amp;amp;quot;greetingLabel&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; /&amp;amp;gt;&amp;amp;lt;/p&amp;amp;gt;
        &amp;amp;lt;p&amp;amp;gt;&amp;amp;lt;asp:Button ID=&amp;amp;quot;refreshButton&amp;amp;quot; Text=&amp;amp;quot;update m&amp;amp;agrave;n h&amp;amp;igrave;nh&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; /&amp;amp;gt;&amp;amp;lt;/p&amp;amp;gt;
    &amp;amp;lt;/form&amp;amp;gt;
&amp;amp;lt;/body&amp;amp;gt;
&amp;amp;lt;/html&amp;amp;gt;&amp;lt;/pre&amp;gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;V&amp;amp;igrave; thế n&amp;amp;ecirc;n, để cho n&amp;amp;oacute; chạy đ&amp;amp;uacute;ng theo mong muốn th&amp;amp;igrave; ta phải viết  như dưới đ&amp;amp;acirc;y v&amp;amp;agrave; lưu property v&amp;amp;agrave;o trong ViewState.&amp;lt;/p&amp;gt;
&amp;lt;pre class=&amp;quot;brush: csharp;&amp;quot; title=&amp;quot;code&amp;quot;&amp;gt;
//  property để access v&amp;amp;agrave;o gi&amp;amp;aacute; trị đ&amp;amp;atilde; được lưu trong ViewState
private string Name
{
    get { return (string)ViewState[&amp;amp;quot;Name&amp;amp;quot;]; }
    set { ViewState[&amp;amp;quot;Name&amp;amp;quot;] = value; }   
}  

private void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Name = &amp;amp;quot;Ojima Ryouji&amp;amp;quot;;
    }

    //  Name property được lưu trong ViewState
    //  n&amp;amp;ecirc;n kh&amp;amp;ocirc;ng hiện d&amp;amp;ograve;ng chữ &amp;amp;quot;Hello, !&amp;amp;quot;
    greetingLabel.Text = string.Format(&amp;amp;quot;{0}, {1}!&amp;amp;quot;, GetGreetingMessage(), Name);
}&amp;lt;/pre&amp;gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;
&amp;lt;h3&amp;gt;Ch&amp;amp;uacute; &amp;amp;yacute; sử dụng qu&amp;amp;aacute; ViewState&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;Như source code đ&amp;amp;atilde; n&amp;amp;ecirc;u ra ban  n&amp;amp;atilde;y, th&amp;amp;ocirc;ng tin được set trong ViewState, sẽ được gửi tới Web browser như một phần của HTML, n&amp;amp;oacute; được gửi trả lại như một phần của request. Do consume mất mạng n&amp;amp;ecirc;n kh&amp;amp;ocirc;ng sử dụng ViewState đến phần kh&amp;amp;ocirc;ng cần thiết.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Kh&amp;amp;ocirc;ng cần thiết c&amp;amp;oacute; nghĩa l&amp;amp;agrave; th&amp;amp;ocirc;ng tin đ&amp;amp;atilde; được thể hiện từ trước như l&amp;amp;agrave; control property. Thực tế th&amp;amp;igrave; trong source code đưa ra ở tr&amp;amp;ecirc;n kh&amp;amp;ocirc;ng c&amp;amp;oacute; g&amp;amp;igrave; sai. Nếu chia ra l&amp;amp;agrave;m 2 control như source code dưới đ&amp;amp;acirc;y th&amp;amp;igrave; kh&amp;amp;ocirc;ng cần thay phần t&amp;amp;ecirc;n, bởi v&amp;amp;igrave; kh&amp;amp;ocirc;ng sử dụng ViewState như ban đầu th&amp;amp;igrave; vẫn kết th&amp;amp;uacute;c được.&amp;lt;/p&amp;gt;
&amp;lt;pre class=&amp;quot;brush: xhtml;&amp;quot; title=&amp;quot;code&amp;quot;&amp;gt;
&amp;amp;lt;%@ Page Language=&amp;amp;quot;C#&amp;amp;quot; %&amp;amp;gt;

&amp;amp;lt;!DOCTYPE html PUBLIC &amp;amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;amp;quot; &amp;amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;amp;quot;&amp;amp;gt;

&amp;amp;lt;script runat=&amp;amp;quot;server&amp;amp;quot;&amp;amp;gt;
    private void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //  Nếu lưu giữ th&amp;amp;ocirc;ng tin trong control property 
            //  Th&amp;amp;igrave; c&amp;amp;oacute; thể lưu giữ được th&amp;amp;ocirc;ng tin m&amp;amp;agrave; kh&amp;amp;ocirc;ng kh&amp;amp;oacute; khăn g&amp;amp;igrave;.
            nameLabel.Text = &amp;amp;quot;Ojima&amp;amp;quot;;
        }

        greetingLabel.Text = GetGreetingMessage();
    }

    private string GetGreetingMessage()
    {
        //  Lược bỏ.
    }
&amp;amp;lt;/script&amp;amp;gt;

&amp;amp;lt;html xmlns=&amp;amp;quot;http://www.w3.org/1999/xhtml&amp;amp;quot;&amp;amp;gt;
&amp;amp;lt;head id=&amp;amp;quot;Head1&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot;&amp;amp;gt;
    &amp;amp;lt;title&amp;amp;gt;Kh&amp;amp;ocirc;ng sử dụng ViewState trong trường hợp c&amp;amp;oacute; thể biểu hiện bằng control property.&amp;amp;lt;/title&amp;amp;gt;
&amp;amp;lt;/head&amp;amp;gt;
&amp;amp;lt;body&amp;amp;gt;
    &amp;amp;lt;form id=&amp;amp;quot;form1&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot;&amp;amp;gt;
        &amp;amp;lt;p&amp;amp;gt;&amp;amp;lt;asp:Label ID=&amp;amp;quot;greetingLabel&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; /&amp;amp;gt;, &amp;amp;lt;asp:Label ID=&amp;amp;quot;nameLabel&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; /&amp;amp;gt;!&amp;amp;lt;/p&amp;amp;gt;
        &amp;amp;lt;p&amp;amp;gt;&amp;amp;lt;asp:Button ID=&amp;amp;quot;refreshButton&amp;amp;quot; Text=&amp;amp;quot;update m&amp;amp;agrave;n h&amp;amp;igrave;nh&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; /&amp;amp;gt;&amp;amp;lt;/p&amp;amp;gt;
    &amp;amp;lt;/form&amp;amp;gt;
&amp;amp;lt;/body&amp;amp;gt;
&amp;amp;lt;/html&amp;amp;gt;

&amp;lt;/pre&amp;gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;
&amp;lt;h3&amp;gt;Ch&amp;amp;uacute; &amp;amp;yacute; tới timing của event của change series.&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;Web browser  gửi th&amp;amp;ocirc;ng tin request khi bấm button hiển thị bằngthẻ &amp;amp;lt;input type=&amp;amp;rdquo;submit&amp;amp;rdquo;&amp;amp;gt;. Chứ kh&amp;amp;ocirc;ng phải l&amp;amp;agrave; khi update nội dung text box.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Event của change series kh&amp;amp;ocirc;ng qu&amp;amp;aacute; event được tạo trong server site dựa v&amp;amp;agrave;o nội dung của request v&amp;amp;agrave; ViewState. Ch&amp;amp;uacute;ng ta vẫn phải ch&amp;amp;uacute; &amp;amp;yacute; tới cho d&amp;amp;ugrave; ph&amp;amp;aacute;t sinh bằng timing m&amp;amp;agrave; user thay đổi thực tế v&amp;amp;agrave; thậm ch&amp;amp;iacute; cả khi kh&amp;amp;ocirc;ng ph&amp;amp;aacute;t sinh bằng trật tự m&amp;amp;agrave; user đ&amp;amp;atilde; đổi thực tế.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;T&amp;amp;ocirc;i sẽ đưa ra v&amp;amp;iacute; dụ cụ thể. C&amp;amp;aacute;c bạn h&amp;amp;atilde;y nh&amp;amp;igrave;n v&amp;amp;agrave;o source code dưới  đ&amp;amp;acirc;y.&amp;lt;/p&amp;gt;
&amp;lt;pre class=&amp;quot;brush: xhtml;&amp;quot; title=&amp;quot;code&amp;quot;&amp;gt;
&amp;amp;lt;%@ Page Language=&amp;amp;quot;C#&amp;amp;quot; %&amp;amp;gt;

&amp;amp;lt;!DOCTYPE html PUBLIC &amp;amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;amp;quot; &amp;amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;amp;quot;&amp;amp;gt;

&amp;amp;lt;script runat=&amp;amp;quot;server&amp;amp;quot;&amp;amp;gt;
    protected void t&amp;amp;ecirc;n DropDownList_TextChanged(object sender, EventArgs e)
    {
        honorificTitleLabel.Text = t&amp;amp;ecirc;n DropDownList.Text;
    }

    protected void sendt&amp;amp;ecirc;n AndNameButton_Click(object sender, EventArgs e)
    {
        greetingLabel.Text = &amp;amp;quot;Hello, &amp;amp;quot;;
        nameLabel.Text = nameTextBox.Text;
    }
&amp;amp;lt;/script&amp;amp;gt;

&amp;amp;lt;html xmlns=&amp;amp;quot;http://www.w3.org/1999/xhtml&amp;amp;quot; &amp;amp;gt;
&amp;amp;lt;head runat=&amp;amp;quot;server&amp;amp;quot;&amp;amp;gt;
    &amp;amp;lt;title&amp;amp;gt;ch&amp;amp;uacute; &amp;amp;yacute; đến timing event của change series&amp;amp;lt;/title&amp;amp;gt;
&amp;amp;lt;/head&amp;amp;gt;
&amp;amp;lt;body&amp;amp;gt;
    &amp;amp;lt;form id=&amp;amp;quot;form1&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot;&amp;amp;gt;
        &amp;amp;lt;p&amp;amp;gt;
            &amp;amp;lt;!-- 
                Nếu thay đổi giới t&amp;amp;iacute;nh, th&amp;amp;igrave; gọi DropDownList_TextChanged() method...
                Cho d&amp;amp;ugrave; l&amp;amp;agrave; định l&amp;amp;agrave;m như thế, nhưng cũng phải sau khi click button th&amp;amp;igrave; mới gọi được DropDownList_TextChanged() method  
                
                Nếu thuộc t&amp;amp;iacute;nh AutoPostBack l&amp;amp;agrave; true th&amp;amp;igrave; ngay lập tức DropDownList_TextChanged() method được gọi ra, 
                thế nhưng sẽ chỉ sử dụng trong trường hợp đảm bảo phạm vi mạng rộng.
            --&amp;amp;gt;
            &amp;amp;lt;asp:DropDownList ID=&amp;amp;quot;t&amp;amp;ecirc;n DropDownList&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; OnTextChanged=&amp;amp;quot;t&amp;amp;ecirc;n DropDownList_TextChanged&amp;amp;quot;&amp;amp;gt;
                &amp;amp;lt;asp:ListItem Selected=&amp;amp;quot;true&amp;amp;quot; Text=&amp;amp;quot;-&amp;amp;quot; Value=&amp;amp;quot;&amp;amp;quot; /&amp;amp;gt;
                &amp;amp;lt;asp:ListItem Text=&amp;amp;quot;male&amp;amp;quot; Value=&amp;amp;quot;Mr.&amp;amp;quot; /&amp;amp;gt;
                &amp;amp;lt;asp:ListItem Text=&amp;amp;quot;female&amp;amp;quot; Value=&amp;amp;quot;Mrs./Miss&amp;amp;quot; /&amp;amp;gt;
            &amp;amp;lt;/asp:DropDownList&amp;amp;gt;
            &amp;amp;lt;asp:TextBox ID=&amp;amp;quot;nameTextBox&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; /&amp;amp;gt;
            &amp;amp;lt;asp:Button ID=&amp;amp;quot;sendt&amp;amp;ecirc;n AndNameButton&amp;amp;quot; Text=&amp;amp;quot;gửi th&amp;amp;ocirc;ng tin về giới t&amp;amp;iacute;nh v&amp;amp;agrave; t&amp;amp;ecirc;n&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; OnClick=&amp;amp;quot;sendt&amp;amp;ecirc;n AndNameButton_Click&amp;amp;quot; /&amp;amp;gt;
        &amp;amp;lt;/p&amp;amp;gt;
        &amp;amp;lt;p&amp;amp;gt;
            &amp;amp;lt;asp:Label ID=&amp;amp;quot;greetingLabel&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; /&amp;amp;gt;
            &amp;amp;lt;asp:Label ID=&amp;amp;quot;honorificTitleLabel&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; /&amp;amp;gt;
            &amp;amp;lt;asp:Label ID=&amp;amp;quot;nameLabel&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; /&amp;amp;gt;
        &amp;amp;lt;/p&amp;amp;gt;
    &amp;amp;lt;/form&amp;amp;gt;
&amp;amp;lt;/body&amp;amp;gt;
&amp;amp;lt;/html&amp;amp;gt;

&amp;lt;/pre&amp;gt;
&amp;lt;p&amp;gt;Mặc d&amp;amp;ugrave; mong muốn l&amp;amp;agrave; nếu chọn giới t&amp;amp;iacute;nh, th&amp;amp;igrave; nội dung của label t&amp;amp;ecirc;n trang trọng sẽ thay đổi tương ứng cho ph&amp;amp;ugrave; hợp, nhưng đến đ&amp;amp;acirc;y n&amp;amp;oacute; lại kh&amp;amp;ocirc;ng hoạt động b&amp;amp;igrave;nh thường. V&amp;amp;igrave; khi click button th&amp;amp;igrave; đầu ti&amp;amp;ecirc;n request được gửi đi, Textchange event được tạo ra, v&amp;amp;agrave; đến l&amp;amp;uacute;c đ&amp;amp;oacute; th&amp;amp;igrave; event handler được thực hiện.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Thực ra th&amp;amp;igrave; trong ASP.NET 2.0 kh&amp;amp;ocirc;ng c&amp;amp;oacute; phương ph&amp;amp;aacute;p khởi động event khi lựa chọn giới t&amp;amp;iacute;nh. Nếu như chọn AutoPostBack property của control đ&amp;amp;atilde; khởi động event khi thay đổi th&amp;amp;agrave;nh true, v&amp;amp;agrave; nếu JavaScript được tạo ra v&amp;amp;agrave; thay đổi th&amp;amp;igrave; ngay lập tức sẽ postback.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Thế nhưng, AutoPostBack kh&amp;amp;ocirc;ng phải l&amp;amp;agrave; phương ph&amp;amp;aacute;p l&amp;amp;uacute;c n&amp;amp;agrave;o cũng c&amp;amp;oacute; thể sử dụng được. AutoPostBack chỉ c&amp;amp;oacute; thể sử dụng trong trường hợp đảm bảo được phạm vi mạng l&amp;amp;agrave; rộng.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Ch&amp;amp;uacute;ng ta c&amp;amp;ugrave;ng suy nghĩ về trường hợp chọn AutoPostBack l&amp;amp;agrave; true bằng đường truyền chập chờn. Nếu set AutoPostBack property v&amp;amp;agrave;o DropDownList của source code ban n&amp;amp;atilde;y th&amp;amp;igrave; request sẽ được trả về server tại thời điểm chọn giới t&amp;amp;iacute;nh. Thế nhưng do đường truyền chập chờn qu&amp;amp;aacute; n&amp;amp;ecirc;n kh&amp;amp;ocirc;ng trả về ngay được. V&amp;amp;igrave; thế n&amp;amp;ecirc;n, user lại tiến h&amp;amp;agrave;nh input t&amp;amp;ecirc;n m&amp;amp;agrave; m&amp;amp;agrave;n h&amp;amp;igrave;nh chẳng hề thay đổi. Tuy nhi&amp;amp;ecirc;n khi đang input t&amp;amp;ecirc;n th&amp;amp;igrave; đường truyền chập chờn lại được th&amp;amp;ocirc;ng n&amp;amp;ecirc;n n&amp;amp;oacute; đ&amp;amp;atilde; trả lại response. Do trả lại response n&amp;amp;ecirc;n Web browser thay m&amp;amp;agrave;n h&amp;amp;igrave;nh. Trong response đ&amp;amp;oacute; kh&amp;amp;ocirc;ng c&amp;amp;oacute; t&amp;amp;ecirc;n m&amp;amp;agrave; user đang input dở, v&amp;amp;igrave; thế n&amp;amp;ecirc;n t&amp;amp;ecirc;n đang input dở bị mất đi, v&amp;amp;agrave; user sẽ cảm thấy rất bực m&amp;amp;igrave;nh.&amp;lt;/p&amp;gt;
&amp;lt;h2&amp;gt;T&amp;amp;oacute;m tắt&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;ASP.NET 2.0 c&amp;amp;oacute; khả năng tạo Web  application bằng phương ph&amp;amp;aacute;p ph&amp;amp;aacute;t triển giống với Visual Basic. C&amp;amp;oacute; phương ph&amp;amp;aacute;p l&amp;amp;agrave;m cho cấu tr&amp;amp;uacute;c Web application trở l&amp;amp;ecirc;n v&amp;amp;ocirc; c&amp;amp;ugrave;ng đơn giản, nếu như kh&amp;amp;ocirc;ng hiểu đ&amp;amp;uacute;ng về cấu tr&amp;amp;uacute;c đ&amp;amp;oacute; m&amp;amp;agrave; lại sử dụng n&amp;amp;oacute; th&amp;amp;igrave; c&amp;amp;oacute; khả năng sẽ kh&amp;amp;ocirc;ng hoạt động như mong muốn, kh&amp;amp;ocirc;ng thể c&amp;amp;oacute; được performance theo mong muốn sử dụng.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Con đường ngắn nhất để hiểu được cấu tr&amp;amp;uacute;c của ASP.NET 2.0 l&amp;amp;agrave; hiểu được HTML v&amp;amp;agrave; HTTP, sau đ&amp;amp;oacute; th&amp;amp;igrave; hiểu xem l&amp;amp;agrave; ASP.NET 2.0 chạy bằng cấu tr&amp;amp;uacute;c như thế n&amp;amp;agrave;o. Để l&amp;amp;agrave;m được điều ấy, c&amp;amp;aacute;c bạn h&amp;amp;atilde;y tận dụng tối đa cuốn s&amp;amp;aacute;ch n&amp;amp;agrave;y.&amp;lt;/p&amp;gt;
&amp;lt;p style=&amp;quot;text-align: right;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Theo - [Usol VN] &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;</Body><CommentEnabled>True</CommentEnabled><ViewCount>0</ViewCount><ReleaseDate>4/11/2010 8:47:00 AM</ReleaseDate><TotalComment>0</TotalComment><IsMedia>False</IsMedia><IsPicture>False</IsPicture><IsVote>True</IsVote><ArticlePassword /><PostVisible>0</PostVisible><ArticlePath>/2010/3/24/Nhap-mon-ASP-NET-2-0-phan-3-362</ArticlePath><Approved>True</Approved><ImagePath /><CategoryId>26</CategoryId><ArrayCatID>26|25</ArrayCatID></Article></Articles>